package com.miaoda.miaoda_ai.core.saver;

import com.miaoda.miaoda_ai.ai.model.HtmlCodeResult;
import com.miaoda.miaoda_ai.ai.model.MultiFileCodeResult;
import com.miaoda.miaoda_ai.model.enums.CodeGenTypeEnum;

import java.io.File;

/**
 * 代码保存执行器 - 执行器模式
 */
public class CodeFileSaverExecutor {
    private static final CodeFileSaverTemplate<HtmlCodeResult> HTML_CODE_SAVER = new HtmlCodeSaverTemplate();
    private static final CodeFileSaverTemplate<MultiFileCodeResult> MULTI_FILE_CODE_SAVER = new MultiCodeSaverTemplate();

    /**
     * 保存代码
     *
     * @param codeResult      代码结果
     * @param codeGenType     代码生成类型
     * @return 保存后的文件
     */
    public static File saveCode(Object codeResult, CodeGenTypeEnum codeGenType, Long appId) {
        return switch (codeGenType) {
            case HTML -> HTML_CODE_SAVER.saveCode((HtmlCodeResult) codeResult, appId);
            case MULTI_FILE -> MULTI_FILE_CODE_SAVER.saveCode((MultiFileCodeResult) codeResult, appId);
            default -> throw new RuntimeException("不支持的生成类型");
        };
    }
}
